<?php

class ApoyoAlimentario_BeneficiarioController extends Zend_Controller_Action {

    public function init() {
        $this->view->baseUrl = $this->_request->getBaseUrl();
    }

    public function preDispatch() {
        $options = array(
            'layout' => 'apoyoalimentario',
        );
        Zend_Layout::startMvc($options);
    }

    public function indexAction() {
        // action body
    }

    public function crearAction() {

        $carreras = new Application_Model_DbTable_Proyectoscurriculares();
        $carrera = $carreras->getall()->toArray();
        $this->view->carreras = $carrera;

        $municipios = new Application_Model_DbTable_Municipios();
        $ciudad = $municipios->getall()->toArray();
        $this->view->ciudades = $ciudad;

        $localidades = new Application_Model_DbTable_Localidades();
        $localidad = $localidades->getall()->toArray();
        $this->view->localidades = $localidad;


        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();

            $codigo = $this->_request->getPost("codigo");
            $carrera = $this->_request->getPost("carrera");
            $nombres = $this->_request->getPost("nombres");
            $apellidos = $this->_request->getPost("apellidos");
            $documento = $this->_request->getPost("documento");
            $tipoDocumento = $this->_request->getPost("tipoDocumento");
            $fechaNacimiento = $this->fechaMysql($this->_request->getPost("fechaNacimiento"));
            $genero = $this->_request->getPost("genero");
            $semestre = $this->_request->getPost("semestre");
            $promedio = $this->_request->getPost("promedio");
            $asignaturasPerdidas = $this->_request->getPost("asignaturasPerdidas");
            $estadoCivil = $this->_request->getPost("estadoCivil");
            $ciudadResidencia = $this->_request->getPost("ciudadResidencia");
            $localidad = $this->_request->getPost("localidad");
            $barrio = $this->_request->getPost("barrio");
            $estrato = $this->_request->getPost("estrato");
            $direccion = $this->_request->getPost("direccion");
            $telefono = $this->_request->getPost("telefono");
            $celular = $this->_request->getPost("celular");
            $email = $this->_request->getPost("email");
            $matricula = $this->_request->getPost("matricula");
            $ingresos = $this->_request->getPost("ingresos");
            $autosostenimiento = $this->_request->getPost("autosostenimiento");
            $sostieneHogar = $this->_request->getPost("sostieneHogar");
            $nucleo = $this->_request->getPost("nucleo");
            $descripcionNucleo = $this->_request->getPost("descripcionNucleo");
            $personasCargo = $this->_request->getPost("personasCargo");
            $descripcionPC = $this->_request->getPost("descripcionPC");
            $procedeFueraBogota = $this->_request->getPost("procedeFueraBogota");
            $ciudadOrigen = $this->_request->getPost("ciudadOrigen");
            $desplazado = $this->_request->getPost("desplazado");
            $poblacion = $this->_request->getPost("poblacion");
            $discapacidad = $this->_request->getPost("discapacidad");
            $patologias = $this->_request->getPost("patologias");
            $patologiasDescripcion = $this->_request->getPost("patologiasDescripcion");
            $seguridadSocial = $this->_request->getPost("seguridadSocial");

            $resp = null;
            $deRepele = 0;
            $reservista = 0;
            $estadoActual = 1;
            //$puntaje = 50;
            $puntaje = $this->calcularPuntaje($estrato, $matricula, $ingresos, $autosostenimiento, $sostieneHogar, $nucleo, $personasCargo, $procedeFueraBogota, $desplazado, $discapacidad, $patologias);
            $tipoAuxilio = $this->asignarTipoSubsidio($puntaje);

            $estudiantes = new Application_Model_DbTable_Estudiantes();
            $inscritos = new Application_Model_DbTable_Inscritos();
            $inscripciones = new Application_Model_DbTable_Inscripciones();

            if ($estudiantes->verificar($codigo) == 1) {
//Si existe en la tabla 'estudiantes', entonces actualizamos sus datos y lo agregamoa a 'inscritos'
                $estudiantes->actualizar($codigo, $carrera, $nombres, $apellidos, $documento, $tipoDocumento, $fechaNacimiento, $genero, $email, $ciudadResidencia, $localidad, $barrio, $direccion, $estrato, $semestre, $telefono, $celular, $deRepele);
                $inscritos->agregar($codigo, $matricula, $ingresos, $autosostenimiento, $sostieneHogar, $nucleo, $descripcionNucleo, $personasCargo, $descripcionPC, $procedeFueraBogota, $ciudadOrigen, $desplazado, $discapacidad, $patologias, $patologiasDescripcion, $seguridadSocial, $estadoCivil, $promedio, $asignaturasPerdidas, $poblacion, $reservista, $estadoActual, $tipoAuxilio);
//$inscripciones->agregar($codigo, $puntaje);

                if ($inscripciones->esInscritoActual($codigo)) {
//Devuelve '1' Si el codigo de estudiante Existe y ya está inscrito en la convocatoria actual
                    $resp = 1;
                } else {
//Si el estudiante existe y aún no esta inscrito, creamos la inscripcion.
                    $inscripciones->agregar($codigo, $puntaje);
                    $resp = 0;
                }
            } else {
//Si el codigo de estudiante NO Existe en la tabla 'estudiantes', entonces lo creamos en la tabla 'estudiantes' e 'inscritos' y agregamos la inscripcion
                $estudiantes->agregar($codigo, $carrera, $nombres, $apellidos, $documento, $tipoDocumento, $fechaNacimiento, $genero, $email, $ciudadResidencia, $localidad, $barrio, $direccion, $estrato, $semestre, $telefono, $celular, $deRepele);
                $inscritos->agregar($codigo, $matricula, $ingresos, $autosostenimiento, $sostieneHogar, $nucleo, $descripcionNucleo, $personasCargo, $descripcionPC, $procedeFueraBogota, $ciudadOrigen, $desplazado, $discapacidad, $patologias, $patologiasDescripcion, $seguridadSocial, $estadoCivil, $promedio, $asignaturasPerdidas, $poblacion, $reservista, $estadoActual, $tipoAuxilio);
                $inscripciones->agregar($codigo, $puntaje);
                $resp = 0;
            }
            echo $resp;
        }
    }

    public function consultarAction() {
//Verificar que venga de una peticion AJAX
        if ($this->getRequest()->isXmlHttpRequest()) {
//Deshabilitamos los Layouts
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $beneficiarios = new Application_Model_DbTable_Beneficiarios();

//Recibir los valores
            $resp = NULL;
            $codigo = $this->_request->getPost("codigo");
            $existe = $beneficiarios->existe($codigo);
            
            if ($beneficiarios->existe($codigo)) {
                
                $beneficiario = $beneficiarios->consultarBeneficiarioEstudiante($codigo);

                if (!empty($beneficiario)) {
                    $idBeneficiario = $beneficiario['codigo_beneficiario'];
                    $inscripciones = new Application_Model_DbTable_Inscripciones();
                    //$esInscrito = $inscripciones->esInscritoActual($codigo);
                    if ($inscripciones->esInscritoActual($idBeneficiario)) {
//Devuelve '1' Si el codigo de estudiante Existe y ya está inscrito en la convocatoria actual
                        $resp = 1;
                    } else {
//Si el estudiante existe y aun no esta inscrito, se cosultan sus datos.
                        $resp = Zend_Json::encode($beneficiario);
                    }
                }
                else
                    $resp = 2;//El código o número de documento ingresado existe como "Beneficiario", pero no es un "Estudiante"
            } else {
//Devuelve '0' Si el codigo de estudiante NO Existe en la tabla 'estudiantes'
                $resp = 0;
            }
            echo $resp;
        }
    }

    public function calcularPuntaje($estrato, $matricula, $ingresos, $autosostenimiento, $sostieneHogar, $nucleo, $personasCargo, $procedeFueraBogota, $desplazado, $discapacidad, $patologias) {

        $evaluacionTrabajoSocial = 15;
        $puntaje = $evaluacionTrabajoSocial;
        $SMMV = 566700; //Salario minimo mensual vigente        
//Estrato
        if ($estrato == 1 || $estrato == 2) {
            $puntaje = $puntaje + 10;
        } else {
            if ($estrato == 3) {
                $puntaje = $puntaje + 5;
            }
        }
//Matrícula
        if ($matricula >= 795600) {
            $puntaje = $puntaje + 0;
        } else {
            if ($matricula >= 677300) {
                $puntaje = $puntaje + 4;
            } else {
                if ($matricula >= 477400) {
                    $puntaje = $puntaje + 8;
                } else {
                    if ($matricula >= 318250) {
                        $puntaje = $puntaje + 12;
                    } else {
                        if ($matricula >= 160000) {
                            $puntaje = $puntaje + 16;
                        } else {
                            if ($matricula >= 0) {
                                $puntaje = $puntaje + 20;
                            }
                        }
                    }
                }
            }
        }
//Ingresos mensuales
        if ($ingresos > 4 * $SMMV) {
            $puntaje = $puntaje + 0;
        } else {
            if ($ingresos > 3 * $SMMV) {
                $puntaje = $puntaje + 5;
            } else {
                if ($ingresos > 2 * $SMMV) {
                    $puntaje = $puntaje + 10;
                } else {
                    if ($ingresos > 1 * $SMMV) {
                        $puntaje = $puntaje + 15;
                    } else {
                        if ($ingresos > 0) {
                            $puntaje = $puntaje + 20;
                        }
                    }
                }
            }
        }
//Autosostenimiento: '1' = SI. '0' = NO
        if ($autosostenimiento == 1) {
            $puntaje = $puntaje + 4;
        }
//Sostiene Hogar donde vive: '1' = SI. '0' = NO
        if ($sostieneHogar == 1) {
            $puntaje = $puntaje + 4;
        }
//Vive fuera del núcleo familiar inmediato: '1' = SI. '0' = NO
        if ($nucleo == 1) {
            $puntaje = $puntaje + 3;
        }
//Cónyugue, personas a cargo: '1' = SI. '0' = NO
        if ($personasCargo == 1) {
            $puntaje = $puntaje + 4;
        }
//Proviene de municipios fuera de Bogotá: '1' = SI. '0' = NO
        if ($procedeFueraBogota == 1) {
            $puntaje = $puntaje + 5;
        }
//Desplazado: '1' = SI. '0' = NO
        if ($desplazado == 1) {
            $puntaje = $puntaje + 5;
        }
//Discapacidad: '1' = SI. '0' = NO
        if ($discapacidad == 1) {
            $puntaje = $puntaje + 5;
        }
        return $puntaje;
    }

    public function asignarTipoSubsidio($puntaje) {

        if ($puntaje >= 60) {
            $tipoSubsidio = "T";
        } else {
            if ($puntaje >= 45) {
                $tipoSubsidio = "A";
            } else {
                if ($puntaje >= 25) {
                    $tipoSubsidio = "B";
                } else {
                    if ($puntaje <= 24) {
                        $tipoSubsidio = "N";
                    }
                }
            }
        }
        return $tipoSubsidio;
    }

}

